package com.learning.datastruct.collection.list;


import com.learning.datastruct.collection.MyCollection;

/**
 * @author ZLH
 */
public interface MyList<E> extends MyCollection<E> {
    /**
     * 获取指定索引位置的元素
     *
     * @param index 要获取元素的索引值
     * @return 对应索引位置的元素
     */
    E get(int index);

    /**
     * 设置指定索引位置的元素
     *
     * @param index   要设置元素的索引值
     * @param element 要设置元素
     * @return 索引位置原有值
     */
    E set(int index, E element);

    /**
     * 向指定索引位置添加元素
     *
     * @param index   要添加元素的索引
     * @param element 要添加的元素
     */
    void add(int index, E element);

    /**
     * 移除指定索引位置的元素
     *
     * @param index 要移除的索引
     * @return 对应索引位置的元素
     */
    E remove(int index);

    /**
     * 获取指定元素的第一个索引值
     *
     * @param o 要查找的元素
     * @return 元素对应的索引值 查询不到返回-1
     */
    int indexOf(Object o);

    /**
     * 获取指定元素的最后的索引值
     *
     * @param o 要查找的元素
     * @return 元素对应的索引值 查询不到返回-1
     */
    int lastIndexOf(Object o);
}
